perm filename FASTIO.FAI[IRC,LCS] blob sn#104314 filedate 1977-03-30 generic text, type T, neo UTF8
;**** UDP PORTIONS ARE FOR STANFORD DISK SYSTEM(USER-DISK PACK)
;  MTA1 ITEMS ARE USED WITH "TAPMUS" (ETC.), TAPE TRANSFER PROGS.
	TITLE FSTUDP ; ********* NOV 4,70 *********
	INTERNAL INTUDP,TOUDP,FINUDP,TOTAPE,FINTAP,BACKSP
	INTERNAL GETTAP,INTAPE,FSTMUS,PUTMUS,FINMUS
	INTERNAL MTA1,INMTA1
	INTERNAL GETFIL,PUTFIL,FASTIN,FASTOUT,FINFIL
	EXTERNAL CVTALC
; USE UDFAST.DMP[1,3] TO PLAY FROM UDP

	FILUDP←←1		;SET TO 0 FOR NON-FILE STRUCTURED UDP
				;SET TO 1 FOR FILE STRUCTURED UDP
	MAXBLK←←=4998		;=4999 IS USED BY SYSTEM FOR PASSWORD

	CH←12
	CH2←11
	CH3←13
	BLKS←←=1

DEFINE ERROR (MSG)
<	JSA 16,.ERROR
	JUMP [ASCIZ/MSG/
]
>

REGS:	BLOCK 20


;CALL PUTFIL(<FILE>)

PUTFIL:	0
	MOVE 0,@0(16)
	MOVEM FILNAM
	JSA 16,INTFIL
	MOVE 0,[SIXBIT/DMD/]
	MOVEM 0,DIR+1
	SETZM DIR+2
	SETZM DIR+3
	ENTER CH2,DIR
	0
	JRA 16,1(16)

;CALL FASTOUT(<ARRAY>,<NO. OF WORDS>)

FASTOUT: 0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	OUTPUT CH2,COM
	STATZ CH2,740000
	0
	JRA 16,2(16)



;CALL FINFIL

FINFIL:	0
	CLOSE CH2,0
	STATZ CH,740000
	0
	RELEASE CH2,0
	JRA 16,0(16)

;CALL GETFIL(<FILE>)

GETFIL:	0
	MOVE 0,@0(16)
	MOVEM 0,FILNAM
	JSA 16,INTFIZ
	MOVE 0,[SIXBIT/DMD/]
	MOVEM 0,DIR+1
	JSA 16,LKUP
	SKIPA
	JRST GETF3
	SETZM DIR+1
	JSA 16,LKUP
	0
GETF3:	JRA 16,1(16)

LKUP:	0
	SETZM DIR+2
	SETZM DIR+3
	LOOKUP CH3,DIR
	JRA 16,0(16)
	JRA 16,1(16)

INTFIZ:	0	;INITS DSK FOR INPUT
	MOVEI REGS
	BLT REGS+3
	INIT CH3,17
	SIXBIT/DSK/
	0
	ERROR <CAN'T INIT DSK!>
	JRST INTF4

DIR:	BLOCK 4


;CALL FASTIN(<ARRAY>,<NO. WORDS>)

FASTIN:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	INPUT CH3,COM
	STATZ CH3,740000
	0
	JRA 16,2(16)

;CALL MTA1
MTA1:	0	;CH2, READS MTA1.
	INIT CH2,617
	SIXBIT/MTA1/
	0
	ERROR <CAN'T INIT MTA1>
	JRA 16,0(16)
;CALL INMTA1(<ARRAY>,<NO. OF WORDS>)
INMTA1:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	INPUT CH2,COM
	STATZ CH2,740000
	ERROR <MAG TAPE READ ERROR>
	JRA 16,2(16)

;CALL PUTMUS(<FILE>)

PUTMUS:	0	;USES INTMUS,FSTMUS,FINMUS, CH2. WRITES ON 2314. 
	MOVE 0,@0(16)
	MOVEM 0,FILNAM
	JSA 16,INTFIL
	MOVE 0,DIR
	CAME 0,[SIXBIT/MUSIC/]	;IS FILE NAME "MUSIC"
	JRST .+3		;NO -- DO NORMAL ENTER
	JSA 16,CVTALC		;YES -- DO EXTENDED ENTER TO
	JRA 16,1(16)		;GET 1000 BLOCKS
	MOVE 0,[SIXBIT/MUS/]
	MOVEM 0,DIR+1
	SETZM DIR+2
	SETZM DIR+3
	ENTER CH2,DIR
	ERROR <ENTER FAILED>
	JRA 16,1(16)

;CALL FSTMUS(<ARRAY>,<NO. OF WORDS>)

FSTMUS:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	OUTPUT CH2,COM
	STATZ CH2,740000
	ERROR <WRITE ERROR>
	JRA 16,2(16)

;CALL INTUDP

INTUDP:	0	;USES TOUDP, FINUDP, CH2. WRITES ON UDP.
	INIT CH2,17
	SIXBIT/UDP/
	0
	ERROR <CAN'T INIT UDP>
IFE FILUDP,<
	MOVEM BLKNUM
	MOVEI 1
	EXCH BLKNUM
>
IFN FILUDP,<
	IN CH2,[IOWD 40,UDPBUF
		0]
	CAIA
	ERROR <CAN'T READ UDP BITMAP>
	SKIPN 1,UDPBUF+20	;IS THERE A POINTER TO SCRATCH AREA
	MOVEI 1,1		;NO, START AT BLOCK 1
	MOVEM 1,BLKNUM		;SET BLOCK NUMBER
>
	ENTER	CH2,[0
		0
		0
		0]
	ERROR <WRONG PASSWORD, PLEASE MOUNT CORRECT UDP>
	JRA 16,0(16)

INTFIL:	0	;INITS DSK 
	MOVEI REGS
	BLT REGS+3
	INIT CH2,17
	SIXBIT/DSK/
	0
	ERROR <CAN'T INIT DSK!>
INTF4:	MOVE 0,FILNAM#
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
INTF3:	MOVE 2,[POINT 6,DIR]
	SETZM DIR
	MOVEI 3,5
INTF1:	ILDB 0,1
	CAIN 0," "
	JRST INTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
INTF2:	HRLZI REGS
	BLT 3
	JRA 16,0(16)

;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>)  WRITES ON MAGTAPE

TOTAPE:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	OUTPUT CH,COM
	STATZ CH,740000
	ERROR <MAG TAPE WRITE ERROR>
	JRA 16,2(16)

;CALL GETTAP

GETTAP:	0	;USES INTAP OR TOTAPE, CH.  READS OR WRITES MTA0.
	INIT CH,617
	SIXBIT/MTA0/
	0
	ERROR <CAN'T INIT MTA0>
	JRA 16,0(16)

;CALL INTAPE(<ARRAY>,<NO.OF WORDS>)  READS MAGTAPE

INTAPE:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	INPUT CH,COM
	STATZ CH,740000
	ERROR <MAG TAPE READ ERROR>
	JRA 16,2(16)

	;CALL TOUDP(<ARRAY>,<NO. OF WORDS>)

TOUDP: 0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM1
	MOVN 0,@1(16)
	HRLM 0,COM1
	MOVE 0,BLKNUM
	CAILE 0,MAXBLK-BLKS+1
	ERROR <UDP FULL!>
	OUTPUT CH2,COM1
	MOVEI 0,BLKS
	ADDM 0,BLKNUM
	STATZ CH2,740000
	ERROR <UDP WRITE ERROR>
	JRA 16,2(16)

COM:	OCT 0,0
COM1:	0
BLKNUM:	0

;CALL FINUDP(WORD COUNT)

FINUDP:	0
	MOVE 0,@ 0(16)
IFE FILUDP,<
	MOVEM 0,[FOO:	0
			0	]
	OUTPUT CH2,[IOWD 40,FOO
		0 ]
	CAIA
>
IFN FILUDP,<
	IN CH2,[IOWD 40,UDPBUF
		0]
	CAIA
	ERROR <ERROR IN READING UDP BITMAP!>
	MOVEM 0,UDPBUF+21
	OUT CH2,[IOWD 40,UDPBUF
		0]
	JRST FINMUS+1
	ERROR <ERROR IN WRITING UDP BITMAP!>
>
;CALL FINMUS
FINMUS:	0
	CLOSE CH2,4
	STATZ CH2,740000
	ERROR <ERROR AFTER CLOSE>
	RELEASE CH2,0
	JRA 16,0(16)

FINTAP:	0
	CLOSE CH,0
	STATZ CH,740000
	ERROR <MAG TAPE ERROR AFTER CLOSE>
	RELEASE CH,0
	JRA 16,0(16)

BACKSP:	0
	INIT CH,617
	SIXBIT/MTA0/
	0
	ERROR <CAN'T INIT MTA0>
	MTAPE CH,7
	JRA 16,0(16)

.ERROR:	0
	OUTSTR [ASCIZ/?
/]				;MAKE SURE HE CAN SEE HIS ERROR
	OUTSTR @(16)		;OUTPUT ERROR MESSAGE
	CALLI 1,12		;LET USER CONTINUE
	JRA 16,1(16)
UDPBUF:	BLOCK 40
;END
;	TITLE	NORM	;DEB, 11/13/69

;	CALL NORM(ARRAY,SIZE,FACTOR)
; UNPACKS 18-BIT SMPLS, NORMALIZES, REPACKS AS 12-BIT SMPLS.
; ---- 3K OF 18-BIT BECOMES 2K OF 12-BIT
;****** BE SURE TO SET FACTOR FOR 9-BIT SO MAXAMP IS NOT >255.


	INTERNAL  NORM

X	←	2	;LOOP AND INDEX
T	←	3	;BASE OF IBOTT


NORM:	0
	HRR X,0(16)
	MOVN T,@1(16)
	HRL X,T
	HRR T,X
	HRLI T,441400	;FOR 12-BIT.  USE 441100 FOR 9-BIT
	MOVE 4,@2(16)
;;FOR STANFORD ONLY	FIX 4,212000
; NEXT IS EXPORT FIX (TO N10:)
	FSC	4,21
	MULI	4,400
	TSC	4,4
	EXCH	4,5
	ASH	4,-243(5)
N10:	HLL 0(2)
	MUL 4
	IDPB T
	HRL 0(2)
	MUL 4
	IDPB T
	AOBJN X,N10
	JRST 3(16)
	0
	ANDCBM 4,-6	; THESE ARE THE CONSTANTS
	ANDCBI 10,-3

	END